MYSQL 使用OR查询SQL执行很慢

您所在的位置:网站首页 ios 私有地址 速度变慢 MYSQL 使用OR查询SQL执行很慢

MYSQL 使用OR查询SQL执行很慢

2024-03-12 04:49| 来源: 网络整理| 查看: 265

 在公司做一站式服务大厅时, 因为数据原因导致接口返回很慢。一个接口返回要90S; 

根据接口分析,发现程序在执行SQL时发现又一些数据在执行SQL时很慢,一条SQL运行需要花30S左右。

SELECT DISTINCT     t.id AS appId,     t.priority FROM     yzs_unified_app t LEFT JOIN yzs_unified_app_theme t1 ON t.id = t1.app_id LEFT JOIN yzs_app_unified_role t2 ON t.id = t2.app_id LEFT JOIN yzs_user_unified_role t3 ON t2.role_id = t3.role_id LEFT JOIN yzs_app_unified_dept_post t4 ON t.id = t4.app_id LEFT JOIN yzs_user_unified_dept_post t5 ON t4.dept_post_id = t5.dept_post_id WHERE  (   t3.user_id = '1185405911867326464'   or    t5.dept_post_id = -2     ) and t1.theme_id = 5

t3表数据有1W多条数 , T5有100多条数据;

当SQL

  t5.dept_post_id = -2      or  t3.user_id = '1185405911867326464' 

  替换上面条件后发现很快

我们分析发现T3 过滤数据在表存在在时间 不出现很慢, 每一条数据要遍历1W条数; 

 

解决问题:

在On条件上过滤数据,

SELECT DISTINCT     t.id AS appId,     t.priority FROM     yzs_unified_app t LEFT JOIN yzs_unified_app_theme t1 ON t.id = t1.app_id LEFT JOIN yzs_app_unified_role t2 ON t.id = t2.app_id LEFT JOIN yzs_user_unified_role t3 ON t2.role_id = t3.role_id and   t3.user_id = '1185405911867326464'  LEFT JOIN yzs_app_unified_dept_post t4 ON t.id = t4.app_id LEFT JOIN yzs_user_unified_dept_post t5 ON t4.dept_post_id = t5.dept_post_id and  t5.dept_post_id = -2     WHERE t1.theme_id = 5

或者子查询:

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3